package com.xiaoma.h5testdemo.common.helper

import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.jsoup.Jsoup
import java.io.IOException

object FaviconFetcher {
    suspend fun fetchFaviconUrl(urlString: String): String? {
        return withContext(Dispatchers.IO) {
            try {
                // 发送 HTTP 请求并获取 HTML 内容
                val doc = Jsoup.connect(urlString).get()
                // 查找所有的图标链接标签
                val links = doc.select("link[rel~=(?i)^(shortcut )?icon$]")
                // 如果没有找到图标链接标签，则返回空
                if (links.isEmpty()) {
                    return@withContext null
                }
                // 获取第一个图标链接标签的 href 属性值，即图标的 URL
                val iconLink = links.first()
                var faviconUrl = iconLink.attr("href")
                // 如果图标 URL 是相对路径，则拼接成绝对路径
                if (!faviconUrl.startsWith("http")) {
                    // 获取基础 URL
                    val baseUrl = urlString.substring(0, urlString.indexOf("/", 8))
                    faviconUrl = baseUrl + faviconUrl
                }
                faviconUrl
            } catch (e: IOException) {
                e.printStackTrace()
                null
            }
        }

    }
}